/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package logica;

import fisica.CapaFisica;
import fisica.TratamientoMedicamentosoFisica;
import hibernate.objeto.Evolucion;
import hibernate.objeto.TratamientoMedicamentoso;

/**
 *
 * @author Rafael
 */
public class TratamientoMedicamentosoLogica extends CapaLogica{

    /**
     * Crea y persiste el tratamiento para la evolución de la enfermedad del
     * paciente.
     *
     * @param datosFarmacologico Los datos correspondientes a tratamiento
     * farmacologico
     * @param datosNoFarmacologico Los datos correspondientes a tratamiento
     * no farmacologico
     * @param evolucionAmbulatorio La evolución de la enfermedad a la que se le
     * asocia el tratamiento
     * @param tratamientoMedicamentoso El tratamiento a cargar
     * @return true si se agregó correctamente, false en caso contrario
     */
    public static boolean agregarTratamientoMedicamentoso(
            Object[][] datosFarmacologico, Object[][] datosNoFarmacologico,
            Evolucion evolucionAmbulatorio,
            TratamientoMedicamentoso tratamientoMedicamentoso) {

        tratamientoMedicamentoso = crearUObtenerObjetoTratamientoMedicamentoso(
                evolucionAmbulatorio, tratamientoMedicamentoso);

        //Persiste el objeto
        if (CapaFisica.guardarOActualizarObjeto(tratamientoMedicamentoso)) {
            //Crea y persiste los objetos Farmacologicos y NoFarmacologicos
            if (FarmacologicoLogica.agregarTratamientoMedicamentosoFarmacologico(
                    datosFarmacologico, tratamientoMedicamentoso) &&
                    NoFarmacologicoLogica.agregarTratamientoMedicamentosoNoFarmacologico(
                    datosNoFarmacologico, tratamientoMedicamentoso)) {
                return true;
            } else {
                return false;
            }
        } else {
            return false;
        }
    }

    /**
     * Crea un objeto tratamiento medicamentoso con los datos pasados por
     * parámetro.
     *
     * @param evolucion La evolución de la enfermedad a la que se le asocia el
     * tratamiento medicamentoswo
     * @return El objeto TratamientoMedicamentoso creado
     */
    private static TratamientoMedicamentoso crearUObtenerObjetoTratamientoMedicamentoso(
            Evolucion evolucion, TratamientoMedicamentoso tratamientoMedicamentoso) {

        if (tratamientoMedicamentoso == null) {
            tratamientoMedicamentoso = new TratamientoMedicamentoso();
        }

        //Asocio la evolución
        tratamientoMedicamentoso.setEvolucion(evolucion);

        return tratamientoMedicamentoso;
    }

    /**
     * Retorna el objeto TratamientoMedicamentoso según el id de la evolucion.
     *
     * @param idEvolucion El id de la evolucion asociada
     * @return El objeto TratamientoMedicamentoso consultado, null si no existe
     */
    public static TratamientoMedicamentoso getTratamientoMedicamentosoPorIdEvolucion(
            int idEvolucion) {
        return TratamientoMedicamentosoFisica.getTratamientoMedicamentosoPorIdEvolucion(
                idEvolucion);
    }

}
